package com.zhiwen.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zhiwen.domain.dto.UserSettingsDTO;
import com.zhiwen.domain.entity.UserSettings;
import com.zhiwen.domain.vo.UserSettingsVO;

/**
 * 用户设置服务接口
 */
public interface UserSettingsService extends IService<UserSettings> {

    /**
     * 获取用户设置
     * @param userId 用户ID
     * @return 用户设置视图对象
     */
    UserSettingsVO getUserSettings(Long userId);

    /**
     * 更新用户设置
     * @param settingsDTO 用户设置数据传输对象
     * @return 更新后的用户设置视图对象
     */
    UserSettingsVO updateUserSettings(UserSettingsDTO settingsDTO);

    /**
     * 设置通知偏好
     * @param userId 用户ID
     * @param type 通知类型
     * @param enabled 是否启用
     * @return 更新后的用户设置视图对象
     */
    UserSettingsVO updateNotificationSettings(Long userId, String type, boolean enabled);

    /**
     * 设置隐私偏好
     * @param userId 用户ID
     * @param type 隐私设置类型
     * @param enabled 是否启用
     * @return 更新后的用户设置视图对象
     */
    UserSettingsVO updatePrivacySettings(Long userId, String type, boolean enabled);

    /**
     * 设置界面偏好
     * @param userId 用户ID
     * @param darkMode 是否启用深色模式
     * @param language 语言设置
     * @return 更新后的用户设置视图对象
     */
    UserSettingsVO updateInterfaceSettings(Long userId, Boolean darkMode, String language);

    /**
     * 重置用户设置为默认值
     * @param userId 用户ID
     * @return 重置后的用户设置视图对象
     */
    UserSettingsVO resetUserSettings(Long userId);
}
